#!/usr/bin/python3
# -*- coding:utf-8 -*-
# __author__ == taoyulong2018@gmail.com
# __time__ == 2023/8/18 14:45
# ===========================================
#       题目名称： 12. 整数转罗马数字
#       题目地址： https://leetcode.cn/problems/integer-to-roman/description/
#       题目描述： https://note.youdao.com/s/RRXNSXjR
# ===========================================


class Solution:
    """
        实现思路：
            // 整除
            定义好常见的 通过整除得出
    """
    def intToRoman(self, num: int) -> str:
        if not 1 <= num <= 3999:
            return ""
        roman_dict = {1: "I", 2: "II", 3: "III", 4: "IV", 5: "V", 6: "VI", 7: "VII", 8: "VIII", 9: "IX",
                      10: "X", 20: "XX", 30: "XXX", 40: "XL", 50: "L", 60: "LX", 70: "LXX", 80: "LXXX", 90: "XC",
                      100: "C", 200: "CC", 300: "CCC", 400: "CD", 500: "D", 600: "DC", 700: "DCC", 800: "DCCC", 900: "CM",
                      1000: "M", 2000: "MM", 3000: "MMM",
                      }
        result_roman = []
        if num // 1000 > 0:
            result_roman.append(roman_dict[num // 1000 * 1000])
            num -= num // 1000 * 1000
        if num // 100 > 0:
            result_roman.append(roman_dict[num // 100 * 100])
            num -= num // 100 * 100
        if num // 10 > 0:
            result_roman.append(roman_dict[num // 10 * 10])
            num -= num // 10 * 10
        if num > 0:
            result_roman.append(roman_dict[num])
        return "".join(result_roman)


if __name__ == '__main__':
    s = Solution()
    print("III =>", s.intToRoman(num=3))
    print("IV =>", s.intToRoman(num=4))
    print("IX =>", s.intToRoman(num=9))
    print("LVIII =>", s.intToRoman(num=58))
    print("MCMXCIV =>", s.intToRoman(num=1994))
